const http = require("http")
const fs = require("fs");
const path = require("path")

const mimes = {
    html: 'text/html',
    css: 'text/css',
    js: 'text/javascript',
    png: 'image/png',
    jpg: 'image/jpeg',
    gif: 'image/gif',
    mp4: 'video/mp4',
    mp3: 'audio/mpeg',
    json: 'application/json',
}

/**
 * 设置资源类型（mime类型）
 *      媒体类型是一种标准、用于表示文档、文件、文字或字节流的性质和格式
 *      HTTP服务可以设置响应头 Content Type类型来表示响应体的mime类型、浏览器会根据类型决定如何处理资源
 */
const server = http.createServer((request, response) => {

    const url = new URL(request.url, 'http://127.0.0.1')

    const urls = __dirname + '/static' + url.pathname
    // 获取静态资源文件后缀
    const ext = path.extname(urls).slice(1)
    // 匹配 静态资源文件
    if (mimes[ext]) {
        // charset=utf-8 表示 解决除html外中文乱码问题
        response.setHeader('content-type', mimes[ext] + ';charset=utf-8')
        // 表示没有匹配到
    } else {
        response.setHeader('content-type', 'application/octet-stream')
    }

    fs.readFile(urls, (err, data) => {
        if (err) {
            response.statusCode = 500
            response.end('资源加载失败~')
            return
        }
        response.end(data)
    })
})

server.listen(9000, () => console.log("NodeJS服务启动成功！！！"))

